import random

# 定义一个列表,表示袋中的球
balls = ['W', 'W', 'W', 'W', 'R', 'R']


# 定义一个函数,用于模拟不放回抽样
def simulate_without_replacement(balls, num_samplings):
    # 定义变量,用于记录结果
    results = []
    for _ in range(num_samplings):
        # 复制当前球列表以避免直接修改原始列表（保持函数无副作用）
        # 但实际上，由于我们不在函数外部使用balls，可以直接修改它
        # 这里为了保持一致性，仍然使用复制
        temp_balls = balls[:]

        # 第一次抽取
        ball1 = random.choice(temp_balls)
        temp_balls.remove(ball1)

        # 第二次抽取
        ball2 = random.choice(temp_balls)

        # 记录结果
        results.append((ball1, ball2))

        # 如果需要，可以更新balls列表以反映实际抽取（但在这个函数中我们不需要）
        # balls = temp_balls（实际上，由于我们每次都用副本，这行是多余的）

    # 统计结果
    white_count = sum(1 for b1, b2 in results if b1 == 'W' or b2 == 'W')
    red_count = sum(1 for b1, b2 in results if b1 == 'R' or b2 == 'R')
    both_white_count = sum(1 for b1, b2 in results if b1 == 'W' and b2 == 'W')
    both_red_count = sum(1 for b1, b2 in results if b1 == 'R' and b2 == 'R')

    # 注意：这里的white_count和red_count统计了所有抽取中白球和红球的总数（不考虑是否成对）
    # 如果您只关心成对的情况，可以忽略这两个变量或重新计算它们（只考虑成对的情况）

    return both_white_count, both_red_count  # 根据您的需求，可能还需要返回其他统计信息


# 调用函数,模拟取球过程
both_white_count, both_red_count = simulate_without_replacement(balls=balls, num_samplings=1000)

# 输出结果
print("取到两个都是白球的概率为:", both_white_count / 1000)
print("取到两个都是红球的概率为:", both_red_count / 1000)